﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Presentacion.Contrato.Propuestas;
using Sistema_Totem.Logica.Fabricas;
using Sistema_Totem.Logica.Comandos;
using Sistema_Totem.Clases;
using Sistema_Totem.Clases.Fabricas;
using System.Xml;
using AjaxControlToolkit;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace Sistema_Totem.Presentacion.Presentador.Propuestas
{
    public class PresentadorModificarPropuesta
    {
        #region Atributos

        private IContratoModificarPropuesta _vista;
        private string _mensajeError = "La propuesta no pudo ser modificada";
        private string _mensajeNoExiste = "Este proyecto no posee una propuesta";
        private string _mensajeExito = "Propuesta modificada con éxito";

        #endregion Atributos

        #region Constructor
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="vista">El contrato que implementa</param>
        public PresentadorModificarPropuesta(IContratoModificarPropuesta vista)
        {
            _vista = vista;
        }

        #endregion Constructor

        #region Metodos
        /// <summary>
        /// Metodo que pinta la plantilla en el acordeon
        /// </summary>
        /// <param name="_xmlconsulta">Xml con la plantilla</param>
        public void PintarPropuesta(XmlDocument _xmlconsulta)
        {
            Propuesta p = FabricaEntidad.NuevaPropuesta() as Propuesta;
            p.Contenido = _xmlconsulta;
            string ruta = "";
            _vista.acordeonModificar = p.PintarPlantillaAgregar(_vista.acordeonModificar, _xmlconsulta, ruta);
        }


        /// <summary>
        /// Metodo que valida si existe una propuesta para el proyecto o no
        /// </summary>
        /// <returns>True si tiene, False si no tiene</returns>
        public bool ValidarExistenciaPropuesta()
        {
            Proyecto _miProyecto = (Proyecto)_vista.Sesion["proyecto"];
            Comando<bool> _comando = FabricaComando.CrearComandoVerificarPropuesta(_miProyecto.IdProyecto);
            if (_comando.Ejecutar() == false)
            {
                _vista.acordeonModificar.Visible = false;
                _vista.etiquetaMensajeInformativo.Text = _mensajeNoExiste;
                return false;
            }
            else
            {
                _vista.acordeonModificar.Visible = true;
                _vista.etiquetaMensajeInformativo.Visible = false;
                Comando<Entidad> _comandoConsulta = FabricaComando.CrearComandoConsultarPropuesta(_miProyecto.IdProyecto);
                Propuesta _propuestaConsulta = _comandoConsulta.Ejecutar() as Propuesta;
                PintarPropuesta(_propuestaConsulta.Contenido);
                return true;

            }

        }


        /// <summary>
        /// Metodo que genera un XML y guarda a partir del acordeon
        /// </summary>
        /// <param name="_acordeon">Acordeon</param>
        public void GenerarXmlPropuesta(Accordion _acordeon)
        {
            Proyecto _miProyecto = (Proyecto)_vista.Sesion["proyecto"];
            Propuesta p = FabricaEntidad.NuevaPropuesta() as Propuesta;
            XmlDocument _xmlGuardar = p.AccordionToXml(_vista.acordeonModificar);
            p.Contenido = _xmlGuardar;
            Comando<bool> _comando1 = FabricaComando.CrearComandoModificarPropuesta(p, _miProyecto.IdProyecto);
            if (_comando1.Ejecutar())
            {
                _vista.acordeonModificar.Visible = false;
                _vista.etiquetaMensajeInformativo.Visible = true;
                _vista.etiquetaMensajeInformativo.Text = _mensajeExito;
                _vista.botonModificar.Visible = false;
                _vista.botonCancelar.Visible = false;
            }
            else
            {
                _vista.acordeonModificar.Visible = false;
                _vista.etiquetaMensajeInformativo.Visible = true;
                _vista.etiquetaMensajeInformativo.Text = _mensajeError;
                _vista.botonModificar.Visible = false;
                _vista.botonCancelar.Visible = false;
            }

        }

        #endregion Metodos
    }
}